package com.yonyougov.devops.cruxcisupport.roleenv;

import com.yonyougov.devops.cruxcisupport.roleenv.vo.FindEnvIdsByRoleIdsDto;
import com.yonyougov.devops.cruxcisupport.roleenv.vo.RoleEnvPageByRoleIdDto;
import com.yonyougov.devops.cruxcisupport.roleenv.vo.RoleEnvPageByRoleIdVo;
import com.yonyougov.devops.fwc.core.dao.impl.BaseDaoImpl;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;

import java.math.BigInteger;
import java.util.List;

/**
 * t_role_env数据层实现
 */
@Repository
public class RoleEnvDaoImpl extends BaseDaoImpl<RoleEnvEntity, BigInteger> implements RoleEnvDao {

    private final SqlSessionTemplate sqlSessionTemplate;

    public RoleEnvDaoImpl(SqlSessionTemplate sqlSessionTemplate) {
        this.sqlSessionTemplate = sqlSessionTemplate;
    }

    //<!--用户自定义代码开始-->

    @Override
    public void addBatch(List<RoleEnvEntity> params) {
        String statement = RoleEnvEntity.class.getName() + "Mapper.addBatch";
        sqlSessionTemplate.insert(statement, params);
    }

    @Override
    public void deleteBatchRoleEnvByPrimaryKey(List<BigInteger> ids) {
        String statement = RoleEnvEntity.class.getName() + "Mapper.deleteBatchRoleEnvByIds";
        sqlSessionTemplate.insert(statement, ids);
    }

    /**
     * 查角色-环境的关联关系
     * 条件: 角色id,环境名称
     *
     * @param roleEnvPageByRoleIdDto [com.yonyougov.devops.cruxcisupport.roleenv.vo.RoleEnvPageByRoleIdDto]
     * @return java.util.List
     */
    @Override
    public List<RoleEnvPageByRoleIdVo> findRoleEnvPageByRoleId(RoleEnvPageByRoleIdDto roleEnvPageByRoleIdDto) {
        String statement = RoleEnvEntity.class.getName() + "Mapper.findAllRoleEnvPageLike";
        return sqlSessionTemplate.selectList(statement, roleEnvPageByRoleIdDto);
    }

    /**
     * 查角色-环境的关联关系
     * 条件: 角色id,环境名称
     *
     * @param roleEnvPageByRoleIdDto [com.yonyougov.devops.cruxcisupport.roleenv.vo.RoleEnvPageByRoleIdDto]
     * @return int
     */
    @Override
    public int countRoleEnvByRoleId(RoleEnvPageByRoleIdDto roleEnvPageByRoleIdDto) {
        String statement = RoleEnvEntity.class.getName() + "Mapper.countByRoleEnvPageLike";
        return sqlSessionTemplate.selectOne(statement, roleEnvPageByRoleIdDto);
    }

    /**
     * 查环境ids
     * 条件: 角色ids
     *
     * @param findEnvIdsByRoleIdsDto [com.yonyougov.devops.cruxcisupport.roleenv.vo.FindEnvIdsByRoleIdsDto]
     * @return java.util.List
     */
    @Override
    public List<BigInteger> findEnvIdsByRoleIds(FindEnvIdsByRoleIdsDto findEnvIdsByRoleIdsDto) {
        String statement = RoleEnvEntity.class.getName() + "Mapper.getEnvIdsByRoleIds";
        return sqlSessionTemplate.selectList(statement, findEnvIdsByRoleIdsDto);
    }

    /**
     * 查环境ids
     * 条件: 角色ids
     *
     * @param roleIds 角色ids
     * @return java.util.List
     */
    @Override
    public List<BigInteger> findEnvIdsByRoleIds(List<BigInteger> roleIds) {
        String statement = RoleEnvEntity.class.getName() + "Mapper.getCurrentUserEnvIds";
        return sqlSessionTemplate.selectList(statement, roleIds);
    }

    //<!--用户自定义代码结束-->
}
